//
//  Lesson3.swift
//  AlgorithmSwift
//
//  Created by 李笑臣 on 2020/11/11.
//

import Cocoa

/**
 
 3. 无重复字符的最长子串
 给定一个字符串，请你找出其中不含有重复字符的 最长子串 的长度。

 示例 1:

 输入: "abcabcbb"
 输出: 3
 解释: 因为无重复字符的最长子串是 "abc"，所以其长度为 3。
 示例 2:

 输入: "bbbbb"
 输出: 1
 解释: 因为无重复字符的最长子串是 "b"，所以其长度为 1。
 示例 3:

 输入: "pwwkew"
 输出: 3
 解释: 因为无重复字符的最长子串是 "wke"，所以其长度为 3。
      请注意，你的答案必须是 子串 的长度，"pwke" 是一个子序列，不是子串。
 
 */

class Lesson3: NSObject {
    // MARK: - 运行
    class func run() -> Void {
        
        // MARK: 准备参数
        let allString = "aaaaaaaasdfdfefffffffffffffffffgfgfgfhgfhgfhjjyfffffffghhhhhgfhghghghghgnbnbnbmpoiuytrewqhhhhhhhhhjhjhjhjhjhjhjh"
        
        // 计算时间参数
        var startTime: Double
        var endTime: Double
        var timeString: String
        
        // MARK: 开始计算
        // 1
        startTime = CFAbsoluteTimeGetCurrent()
        
        let _ = reason1(allString: allString)
        debugPrint("计算完成")
//        debugPrint("\(reason1(withArray1: array1, array2: array2))")
        
        endTime = CFAbsoluteTimeGetCurrent()
        timeString = String.init(format: "%.2f", (endTime - startTime) * 1000)
        debugPrint("代码执行时长：" + timeString + "毫秒")
    }
    
    // MARK: - 解答
    
    // 最初版本
    class func reason1(allString: String) -> String {
        
        let longSubString = ""
        var leftIndex = 0
        var currentLongSubStringCount = 1
        
        for rightIndex in 1..<allString.count {
            
            let indexLeft = string.index(allString.startIndex, offsetBy: rightIndex - leftIndex)
            let indexRight = string.index(allString.startIndex, offsetBy: m)
            let substr = string[indexN..<indexM]
            
            let tempString = allString[]
            
        }
        
        return longSubString
    }
    
    
}
